package com.example.bigdata.scala.函数式编程

object fun01 {
    def main(args: Array[String]): Unit = {
//        test(1)
//        // 带名参数
//        test1(name1 = "zhangyisss")
        f7(f8)
        // 使用匿名函数完成上面 使用
        //f7((i:Int) =>{println(i)})
        f7((i) =>{println(i)})
        // 简化版
        f7(println(_))
        // 简化版1
        f7(println)
    }
    // 方法默认参数   方法可存在多个默认值 参数匹配规则：从前到后，从左到右
    def test (pid:Int,name:String = "xxxx",age:Int=20): Unit ={
        println(s"${pid} - ${name} - ${age}")
    }
    def test1(name2:String = "lisi",name1:String): Unit ={
        println(s"${name1} - ${name2}")
    }

    // f7 参数f 为方法，方法f的参数为int类型，返回类型Unit
    def f7(f:(Int) =>Unit): Unit ={
        f(10)
    }
    def f8(i : Int): Unit ={
        println(i)
    }

    def f9(f:(Int,Int) => Int): Int ={
       f(10,10)
    }

    // 匿名函数简化版  结果一样
    println(f9((x: Int, y: Int) => {x + y}))
    println(f9((x, y) => {x + y}))
    println(f9((x, y) => x + y))
    println(f9(_+_))

}
